<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
    

<head><meta name="generator" content="Hexo 3.8.0">
    <meta charset="utf-8">
    <meta name="keywords" content=".net总结, Zhou•Yong">
    <meta name="description" content="Asp.NET 知识点总结(一)1.简述 private、 protected、 public、 internal 修饰符的访问权限。
答 . private : 私有类，私有成员, 在类的内部才可以访问。
protected : 保护成员">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="renderer" content="webkit|ie-stand|ie-comp">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <title>.net总结 | Zhou•Yong</title>
    <link rel="icon" type="image/png" href="/favicon.png">

    <link rel="stylesheet" type="text/css" href="/libs/awesome/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/materialize/css/materialize.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/aos/aos.css">
    <link rel="stylesheet" type="text/css" href="/libs/animate/animate.min.css">
    <link rel="stylesheet" type="text/css" href="/libs/lightGallery/css/lightgallery.min.css">
    <link rel="stylesheet" type="text/css" href="/css/matery.css">
    <link rel="stylesheet" type="text/css" href="/css/my.css">

    <script src="/libs/jquery/jquery-2.2.0.min.js"></script>
<link rel="stylesheet" href="/css/prism-tomorrow.css" type="text/css"></head>

</head>

<body>

<header class="navbar-fixed">
    <nav id="headNav" class="bg-color nav-transparent">
        <div id="navContainer" class="container">
            <div class="nav-wrapper">
                <div class="brand-logo">
                    <a href="/" class="waves-effect waves-light">
                        
                        <img src="/medias/logo.png" class="logo-img hide-on-small-only">
                        
                        <span class="logo-span">Zhou•Yong</span>
                    </a>
                </div>
                <a href="#" data-activates="mobile-nav" class="button-collapse"><i class="fa fa-navicon"></i></a>
<ul class="right">
    
    <li class="hide-on-med-and-down">
        <a href="/" class="waves-effect waves-light">
            
            <i class="fa fa-home"></i>
            
            <span>主页</span>
        </a>
    </li>
    
    <li class="hide-on-med-and-down">
        <a href="/about" class="waves-effect waves-light">
            
            <i class="fa fa-user-circle-o"></i>
            
            <span>个人介绍</span>
        </a>
    </li>
    
    <li class="hide-on-med-and-down">
        <a href="/categories" class="waves-effect waves-light">
            
            <i class="fa fa-bookmark"></i>
            
            <span>分类</span>
        </a>
    </li>
    
    <li class="hide-on-med-and-down">
        <a href="/tags" class="waves-effect waves-light">
            
            <i class="fa fa-tags"></i>
            
            <span>标签</span>
        </a>
    </li>
    
    <li class="hide-on-med-and-down">
        <a href="/friends" class="waves-effect waves-light">
            
            <i class="fa fa-address-book"></i>
            
            <span>推荐</span>
        </a>
    </li>
    
    <li>
        <a id="toggleSearch" class="waves-effect waves-light">
            <i id="searchIcon" class="mdi-action-search"></i>
        </a>
    </li>

</ul>

<div class="side-nav" id="mobile-nav">

    <div class="mobile-head bg-color">
        
        <img src="/medias/logo.png" class="logo-img circle responsive-img">
        
        <div class="logo-name">Zhou•Yong</div>
        <div class="logo-desc">
            
            你迈出的步伐不非得很大，只要你是在正确的方向前进就行
            
        </div>
    </div>

    <ul class="menu-list mobile-menu-list">
        
        <li>
            <a href="/" class="waves-effect waves-light">
                
                <i class="fa fa-fw fa-home"></i>
                
                主页
            </a>
        </li>
        
        <li>
            <a href="/about" class="waves-effect waves-light">
                
                <i class="fa fa-fw fa-user-circle-o"></i>
                
                个人介绍
            </a>
        </li>
        
        <li>
            <a href="/categories" class="waves-effect waves-light">
                
                <i class="fa fa-fw fa-bookmark"></i>
                
                分类
            </a>
        </li>
        
        <li>
            <a href="/tags" class="waves-effect waves-light">
                
                <i class="fa fa-fw fa-tags"></i>
                
                标签
            </a>
        </li>
        
        <li>
            <a href="/friends" class="waves-effect waves-light">
                
                <i class="fa fa-fw fa-address-book"></i>
                
                推荐
            </a>
        </li>
        
        
    </ul>

    <div class="social-link"><a href="#!" class="tooltipped" data-tooltip="邮件联系我: zy20081@126.com" data-position="top" data-delay="50">
    <i class="fa fa-envelope-open"></i>
</a>
<a href="#!" class="tooltipped" data-tooltip="QQ联系我: 314153271" data-position="top" data-delay="50">
    <i class="fa fa-qq"></i>
</a>

<a href="/atom.xml" class="tooltipped" target="_blank" data-tooltip="RSS 订阅" data-position="top" data-delay="50">
    <i class="fa fa-rss"></i>
</a>
</div>
</div>

            </div>
        </div>

        
    </nav>
</header>





<div class="bg-cover post-cover" style="background-image: url('/medias/featureimages/7.jpg')">
    <div class="container">
        <div class="row">
            <div class="col s12 m12 l12">
                <div class="brand">
                    <div class="description center-align post-title">
                        .net总结
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>



<main class="post-container content">

    
    <link rel="stylesheet" href="/libs/tocbot/tocbot.css">
<style>
    #articleContent h1,
    #articleContent h2,
    #articleContent h3,
    #articleContent h4,
    #articleContent h5,
    #articleContent h6 {
        padding-top: 76px;
        margin-top: -76px;
    }

    #articleContent h1 {
        line-height: 3.5rem;
    }

    #articleContent h2 {
        line-height: 3.2rem;
    }

    #articleContent h3 {
        line-height: 2.8rem;
    }

    #articleContent h4 {
        line-height: 2.5rem;
    }

    #articleContent h5 {
        line-height: 2.2rem;
    }

    #articleContent h6 {
        line-height: 1.9rem;
    }

    #articleContent :focus {
        outline: none;
    }

    .toc-fixed {
        position: fixed;
        top: 64px;
    }

    .toc-widget {
        padding-left: 20px;
    }

    .toc-widget .toc-title {
        margin: 35px 0 15px 0;
        padding-left: 17px;
        font-size: 1.5rem;
        font-weight: bold;
        line-height: 1.5rem;
    }

    .toc-widget ol {
        padding: 0;
        list-style: none;
    }

    #toc-content ol {
        padding-left: 10px;
    }

    #toc-content ol li {
        padding-left: 10px;
    }

    #toc-content .toc-link:hover {
        color: #42b983;
        font-weight: 700;
        text-decoration: underline;
    }

    #toc-content .toc-link::before {
        background-color: transparent;
        max-height: 25px;
    }

    #toc-content .is-active-link {
        color: #42b983;
    }

    #toc-content .is-active-link::before {
        background-color: #42b983;
    }
</style>
<div class="row">
    <div class="col s12 m12 l9">
        <!-- 文章内容详情 -->
<div id="artDetail">
    <div class="card">
        <div class="card-content article-info">
            
            <div class="article-tag">
                
                <a href="/tags/ASP-NET/" target="_blank">
                    <span class="chip bg-color">ASP.NET</span>
                </a>
                
            </div>
            
            <div class="post-info">
                
                <span class="post-cate">
                    <i class="fa fa-bookmark fa-fw icon-category"></i>
                    
                    <a href="/categories/ASP-NET/" class="post-category" target="_blank">
                        ASP.NET
                    </a>
                    
                </span>
                

                <span class="post-date">
                    <i class="fa fa-clock-o fa-fw"></i>2019-01-09
                </span>
            </div>
        </div>
        <hr>
        <div class="card-content article-card-content">
            <div id="articleContent">
                <h2 id="Asp-NET-知识点总结-一"><a href="#Asp-NET-知识点总结-一" class="headerlink" title="Asp.NET 知识点总结(一)"></a>Asp.NET 知识点总结(一)</h2><p>1.简述 private、 protected、 public、 internal 修饰符的访问权限。</p>
<p>答 . private : 私有类，私有成员, 在类的内部才可以访问。</p>
<p>protected : 保护成员，该类内部和继承类中可以访问。</p>
<p>public : 公共成员，完全公开，没有访问限制。</p>
<p>internal: 内部访问类，只限于本项目内访问，其他不能访问。</p>
<p>2.列举ASP.NET 页面之间传递值的几种方式。</p>
<p>QueryString, 如….?id=1; response. Redirect()….Request.QueryString[“name”];</p>
<p>优点：使用简单，传递数字和文本值非常有效; 缺点：安全性不高，不能传递对象。</p>
<p>使用Session变量 ;<br>优点：使用简单，不仅能传递简单数据类型，还能传递对象。<br>缺点：数据量大小是不限制的。在Session变量存储大量的数据会消耗较多的服务器资源，容易丢失。</p>
<p>使用cookie用于浏览器上存储小块的信息，保存用户的相关信息，方便下次检索，必须字符串<br>优点：使用简单，是保护用户状态常用方法<br>缺点：安全不高，收集用户信息<br>使用：HttpCookie objCookie = new HttpCookie(“myCookie”,”Hello,Cookie!”);Response.Cookies.Add(cookie);</p>
<p>Application<br>Application对象的作用范围是整个全局，也就是说对所有用户都有效。它在整个应用程序生命周期中都是有效的，它和Session变量的区别在于，前者是所有的用户共用的全局变量，后者是各个用户独有的全局变量。</p>
<p>优点：使用简单，消耗较少的服务器资源。缺点：1.作为全局变量容易被误操作。</p>
<p>使用Server.Transfer<br>Server.Transfer方法把流程从当前页面引导到另一个页面中，新的页面使用前一个页面的应答流，所以这个方法是完全面象对象的，简洁有效;</p>
<p>3.C#中的委托是什么？事件是不是一种委托？</p>
<p>委托可以把一个方法或多个方法作为参数代入另一个方法。</p>
<p>委托可以理解为指向一个函数的引用，是引用类型。</p>
<p>是，是一种特殊的委托。在NET事件模型，建立在委托机制上，它实现了对委托的封装。</p>
<p>4.override（重写）与重载（overload）的区别</p>
<p>override 与重载的区别。</p>
<p>重载是方法的名称相同。参数或参数类型不同，进行多次重载以适应不同的需要</p>
<p>Override 是进行基类中函数的重写。为了适应需要面向对象的多态性。</p>
<p>5.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？</p>
<p>答：不是。可以用任意类型。</p>
<p>6.用.net做B/S结构的系统，您是用几层结构来开发，每一层之间的关系以及为什么要这样分层？</p>
<p>答：一般为3层</p>
<p>数据访问层，业务层，表示层。</p>
<p>数据访问层对数据库进行增删查改。</p>
<p>业务层一般分为二层，业务表观层实现与表示层的沟通，业务规则层实现用户密码的安全等。</p>
<p>表示层为了与用户交互例如用户添加表单。</p>
<p>优点： 分工明确，条理清晰，易于调试，而且具有可扩展性。</p>
<p>缺点： 增加成本</p>
<p>7.什么叫应用程序域？</p>
<p>答：应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。</p>
<p>8.CTS、CLS、CLR分别作何解释？</p>
<p>答：CTS：通用语言系统;CLS：通用语言规范;CLR：公共语言运行库;</p>
<p>9.什么是装箱和拆箱？</p>
<p>答：从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。</p>
<p>10.什么是受管制的代码？</p>
<p>答：unsafe：非托管代码。不经过CLR运行。</p>
<p>11.什么是强类型系统？</p>
<p>答：RTTI：类型识别系统。</p>
<p>12.net中读写数据库需要用到那些类？他们的作用？</p>
<p>答：DataSet:数据存储器。用来存储表的数据，并包含各表之间的联系。</p>
<p>DataCommand:执行语句命令。</p>
<p>DataAdapter:数据的集合，用语填充。用来将数据填充到dataset或datatable</p>
<p>datatable:用来存储一个表的数据；</p>
<p>sqlconnection:用来创建一个到数据库的连接。</p>
<p>dataReader:用来顺序读取数据；</p>
<p>13.ASP.net的身份验证方式有哪些？分别是什么原理？</p>
<p>答：Windows: 使用IIS验证方式。;IIS根据应用程序的设置执行身份验证。要使用这种验证方式，在IIS中必须禁用匿名访问。</p>
<p>Forms: 使用基于窗体的验证方式.用Cookie来保存用户凭证，并将未经身份验证的用户重定向到自定义的登录页。</p>
<p>Passport: 采用Passport cookie验证模式..通过Microsoft的集中身份验证服务执行的，为成员站点提供单独登录和核心配置文件服务; None: 不采用任何验证方式</p>
<p>14.什么是Code-Behind技术？</p>
<p>答：ASPX,RESX和CS三个后缀的文件，这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.</p>
<p>15.在.net中，配件的意思是？</p>
<p>答：程序集。（中间语言，源数据，资源，装配清单）</p>
<p>16.常用的调用WebService的方法有哪些？</p>
<p>答：1.使用WSDL.exe命令行工具。</p>
<p>2.使用VS.NET中的Add Web Reference菜单选项</p>
<p>17.net Remoting 的工作原理是什么？</p>
<p>答：服务器端向客户端发送一个进程编号，一个程序域编号，以确定对象的位置。</p>
<p>18.在C＃中，string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。</p>
<p>答：string str = null 是不给他分配内存空间,而string str = “” 给它分配长度为空字符串的内存空间。</p>
<p>19.请详述在dot.net中类(class)与结构(struct)的异同？</p>
<p>答：Class可以被实例化,属于引用类型,是分配在内存的堆上的,</p>
<pre><code>  Struct属于值类型,是分配在内存的栈上的.
</code></pre><p>20.分析以下代码，完成填空</p>
<p>string strTmp = “abcdefg某某某”;</p>
<p>int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;</p>
<p>int j= strTmp.Length;</p>
<p>以上代码执行完后，i= j=  </p>
<p>答：i=13,j=10</p>
<p>21.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。</p>
<p>答：WS主要是可利用HTTP，穿透防火墙。而Remoting可以利用TCP/IP，二进制传送提高效率。</p>
<p>22.面向对象的语言具有<strong>____</strong>性、<strong><strong>_</strong></strong>性、<strong>____</strong>性</p>
<p>答：封装、继承、多态。</p>
<p>23.能用foreach遍历访问的对象需要实现 <strong><strong><strong>____</strong></strong></strong>接口或声明<strong><strong><strong>____</strong></strong></strong>方法的类型。</p>
<p>答：IEnumerable 、 GetEnumerator。</p>
<p>其实IEnumerable接口是非常的简单，只包含一个抽象的方法GetEnumerator()，它返回一个可用于循环访问集合的IEnumerator对象。IEnumerator对象有什么呢？它是一个真正的集合访问器，没有它，就不能使用foreach语句遍历集合或数组，因为只有IEnumerator对象才能访问集合中的项.GetEnumerator方法返回对另一个接口System.Collections.IEnumerator的引用。这个接口提供了基础设施，调用方可以用来移动IEnumerable兼容容器包含的内部对象。</p>
<p>24.GC是什么? 为什么要有GC?</p>
<p>答：GC是垃圾收集器。程序员不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一：</p>
<p>System.gc()</p>
<p>Runtime.getRuntime().gc()</p>
<p>25.String s = new String(“xyz”);创建了几个String Object?</p>
<p>答：两个对象，一个是“xyx”,一个是指向“xyx”的引用对象s。</p>
<p>26.abstract class和interface有什么区别?</p>
<p>答：声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况，不能创建abstract 类的实例。</p>
<p>接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的，接口中的所有方法都是抽象的，没有一个有程序体。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。</p>
<p>相同点：</p>
<p>都可以被继承；都不能被实例化；都可以包含方法，声明；派生类必须实现未实现的方法；</p>
<p>不同点：</p>
<p>A.接口是抽象类的实体，接口中所有的方法必须是抽象的，抽象类是声明相同方法的存在而不去实现他的类；</p>
<p>B.接口可以多继承，而抽象类不行；</p>
<p>C.接口可定义方法不能实现，而抽象类可实现部分</p>
<p>27.启动一个线程是用run()还是start()?</p>
<p>启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。</p>
<p> run()方法可以产生必须退出的标志来停止一个线程。</p>
<p>28.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?</p>
<p>答：接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。</p>
<p>29.构造器Constructor是否可被override?</p>
<p>答：构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。</p>
<p>30.是否可以继承String类?</p>
<p>答：String类是final类故不可以继承。</p>
<h2 id="Asp-NET-知识点总结-二"><a href="#Asp-NET-知识点总结-二" class="headerlink" title="Asp.NET 知识点总结(二)"></a>Asp.NET 知识点总结(二)</h2><p>1.两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?</p>
<p>答：不对，有相同的 hash code 编码格式。</p>
<p>2.swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?</p>
<p>答：switch（expr1）中，expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。</p>
<p>4.List, Set, Map是否继承自Collection接口?</p>
<p>答：List，Set是Map不是</p>
<p>5.Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?</p>
<p>答：Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。</p>
<p>6.数组有没有length()这个方法? String有没有length()这个方法？</p>
<p>答：数组没有length()这个方法，有length的属性。String有length()这个方法。</p>
<p>7.sleep() 和 wait() 有什么区别?</p>
<p>答：创建，就绪，运行，阻塞，死亡</p>
<p>启动一个线程 调用start（）方法，使线程所代表的虚拟处理处于可运行状态，这意味着它可以由jvm调度并执行，并不意味着线程就会立即运行。</p>
<p>run()方法可以产生必须退出的标志来停止一个线程；</p>
<p>一个对象的synchronized方法只能一个线程访问；必须等待当前线程执行完这个代码块以后才能执行；当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?不能，一个对象的一个synchronized方法只能由一个线程访问。</p>
<p>sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后，线程不一定立即恢复执行。这是因为在那个时刻，其它线程可能正在运行而且没有被调度为放弃执行，除非(a)“醒来”的线程具有更高的优先级</p>
<p>(b)正在运行的线程因为其它原因而阻塞。</p>
<p>wait()是线程交互时，如果线程对一个同步对象x 发出一个wait()调用，该线程会暂停执行，被调对象进入等待状态，直到被唤醒或等待时间到。</p>
<p>8.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?</p>
<p>答：short s1 = 1; s1 = s1 + 1;有错，s1是short型，s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。</p>
<p>9.谈谈final, finally, finalize的区别。</p>
<p>final—修饰符（关键字）如果一个类被声明为final，意味着它不能再派生出新的子类，不能作为父类被继承。因此 一个类不能既被声明为 abstract的，又被声明为final的。将变量或方法声明为final，可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值，而在以后的引用中只能读取，不可修改。被声明为 final的方法也同样只能使用，不能重载</p>
<p>finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常，那么相匹配的 catch 子句就会 执行，然后控制就会进入 finally 块（如果有的话）。</p>
<p>finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理 工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ，因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。</p>
<p>10.如何处理几十万条并发数据？</p>
<p>答：用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.</p>
<p>11.Session有什么重大BUG，微软提出了什么方法加以解决？</p>
<p>答：是iis中由于有进程回收机制，系统繁忙的话Session会丢失，可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢，而且无法捕获Session的END事件。</p>
<p>12.进程和线程的区别？</p>
<p>答：进程是系统进行资源分配和调度的单位；线程是CPU调度和分派的单位，一个进程可以有多个线程，这些线程共享这个进程的资源。</p>
<p>13.堆和栈的区别？</p>
<p>答：栈（stack）：由编译器自动分配、释放。在函数体中定义的变量通常在栈上。</p>
<p>堆（keap）：一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。</p>
<p>14.成员变量和成员函数前加static的作用？</p>
<p>答：它们被称为常成员变量和常成员函数，又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量，类成员函数负责这种统计的动作。</p>
<p>15.ASP.NET与ASP相比，主要有哪些进步？</p>
<p>答：asp解释型，aspx编译型，性能提高，有利于保护源码。</p>
<p>16.请指出GAC的含义？</p>
<p>答：全局程序集缓存。</p>
<p>17.向服务器发送请求有几种方式？</p>
<p>答：get,post。get一般为链接方式，post一般为按钮方式。</p>
<p>19.软件开发过程一般有几个阶段？每个阶段的作用？</p>
<p>答：需求分析，架构设计，代码编写，QA，部署</p>
<p>20.在c#中using和new这两个关键字有什么意义，请写出你所知道的意义？</p>
<p>using 指令 和语句 new 创建实例 new 隐藏基类中方法。</p>
<p>答：using 引入名称空间或者使用非托管资源</p>
<p>new 新建实例或者隐藏父类方法</p>
<p>21.在c#中using和new这两个关键字有什么意义，请写出你所知道的意义？using 指令 和语句 new 创建实例 new 隐藏基类中方法。</p>
<p>答：using 引入名称空间或者使用非托管资源</p>
<p>new 新建实例或者隐藏父类方法</p>
<p>22.什么是反射？</p>
<p>答：动态获取程序集信息</p>
<p>24.用Singleton如何写设计模式</p>
<p>答：static属性里面new ,构造函数private</p>
<p>25.什么是Application Pool？</p>
<p>答：Web应用，类似Thread Pool，提高并发性能。</p>
<p>26.什么是虚函数？什么是抽象函数？</p>
<p>答：虚函数：没有实现的，可由子类继承并重写的函数。抽象函数：规定其非虚子类必须实现的函数，必须被重写。</p>
<p>27.什么是ASP.net中的用户控件？</p>
<p>答：用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。</p>
<p>28.什么是SOAP,有哪些应用。</p>
<p>答：simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service使用的协议.</p>
<p>29.C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？</p>
<p>答：一个是属性，用于存取类的字段，一个是特性，用来标识类，方法等的附加性质.</p>
<p>30.什么是WSE？目前最新的版本是多少？</p>
<p>答：WSE（Web Services Enhancements 2.0 for Microsoft .NET ）是一个用来建设Web服务的·NET类库，它支持最新的Web服务协议。最新版本3.0</p>
<h2 id="Asp-NET-知识点总结-三"><a href="#Asp-NET-知识点总结-三" class="headerlink" title="Asp.NET 知识点总结(三)"></a>Asp.NET 知识点总结(三)</h2><p>1.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？</p>
<p>答：不是。可以用任意类型。</p>
<p>2.&lt;%# %&gt; 和 &lt;% %&gt; 有什么区别？</p>
<p>答：&lt;%# %&gt;表示绑定的数据源</p>
<p>&lt;% %&gt;是服务器端代码块</p>
<p>3.重载与覆盖的区别？</p>
<p>答：1、方法的覆盖是子类和父类之间的关系，是垂直关系；方法的重载是同一个类中方法之间的关系，是水平关系</p>
<p>2、覆盖只能由一个方法，或只能由一对方法产生关系；方法的重载是多个方法之间的关系。</p>
<p>3、覆盖要求参数列表相同；重载要求参数列表不同。</p>
<p>4、覆盖关系中，调用那个方法体，是根据对象的类型（对象对应存储空间类型）来决定；重载关系，是根据调 用时的实参表与形参表来选择方法体的。</p>
<p>4.error和exception有什么区别</p>
<p>error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。</p>
<p>exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。</p>
<p>5.Overloaded的方法是否可以改变返回值的类型?</p>
<p>答：Overloaded的方法是可以改变返回值的类型。</p>
<p>6.HashMap和Hashtable的区别。</p>
<p>答：HashMap是Hashtable的轻量级实现（非线程安全的实现），他们都完成了Map接口，主要区别在于HashMap允许空（null）键值（key）,由于非线程安全，效率上可能高于Hashtable.</p>
<p>7.&amp;和&amp;&amp;的区别。</p>
<p>&amp;是位运算符，表示按位与运算，&amp;&amp;是逻辑运算符，表示逻辑与（and）.</p>
<p>8.大概描述一下ASP.NET服务器控件的生命周期</p>
<p>答：初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载</p>
<p>9.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?</p>
<p>答：不能，可以实现接口</p>
<p>10.Static Nested Class和inner class 的不同</p>
<p>Static Nested Class是被声明为静态（static）的内部类，它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。</p>
<p>11.C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？</p>
<p>答：attribute（特性）:自定义属性的基类;用来标识类，方法等的附加性质；Attribute ：是一个对象，作用在于两个方面。一个是影响编译器的形为，另一个是把描述信息写入Assembly中。</p>
<p>property （属性）:类中的属性一个是属性，用于存取类的字段，一个是特性，用来标识类，方法等的附加性质;Property：是一个方法是GET和SET的组合，一个是读，一个是写。</p>
<p>12.当整数a赋值给一个object对象时，整数a将会被？</p>
<p>答：装箱。</p>
<p> 13.类成员有<strong>_</strong>种可访问形式？</p>
<p>答：this.;new Class().Method;</p>
<p> 14.public static const int A=1;这段代码有错误么？是什么？</p>
<p>答：const不能用static修饰。</p>
<p> 15.float f=-123.567F; int i=(int)f;i的值现在是<strong>_</strong>?</p>
<p>答：-123。</p>
<p> 16.委托声明的关键字是<strong>__</strong>?</p>
<p>答：delegate.</p>
<p> 17.用sealed修饰的类有什么特点？</p>
<p>答：密封，不能继承。</p>
<p> 18.在Asp.net中所有的自定义用户控件都必须继承自<strong>____</strong>?</p>
<p>答：Control。</p>
<p> 19.在.Net中所有可序列化的类都被标记为<strong>_</strong>?</p>
<p>答：[serializable]</p>
<p>20.在.Net托管代码中我们不用担心内存漏洞，这是因为有了<strong>__</strong>?</p>
<p>答：GC。</p>
<p>21.什么是虚函数？什么是抽象函数？</p>
<p>答：虚函数：没有实现的，可由子类继承并重写的函数。抽象函数：规定其非虚子类必须实现的函数，必须被重写。</p>
<p>22.谈谈你对ASP和ASP.NET的区别?<br>答：ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点，理论上可以使用任何编程语言包括C++ , VB , JS等等，当然，最合适的编程语言还是MS为.Net Frmaework专门推出的C(读c sharp)，它可以看作是VC和Java的混合体吧，尽管MS自己讲C#内核中更多的象VC，但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言，而不是一种脚本，所以它具有面向对象编程语言的一切特性，比如封装性、继承性、多态性等等，这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰，易于管理，并且应用到ASP.Net上就可以使业务逻辑和Html页面分离，这样无论页面原型如何改变，业务逻辑代码都不必做任何改动；继承性和多态性使得代码的可重用性大大提高，你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。</p>
<p>23.为什么要用IsPortBack<br>答：页面第一次加载时需要绑定一些数据，如果每次加载都绑定的话，会给服务器很大压力ISPORTBACK第一次加载时返回的是false，以后每次返回的都是true，这样可以设置    一些只需要在页面一次加载时就绑定好的数据。</p>
<p>24..MVC指的是什么?<br>答：MVC将程序功能分成三部分考虑：视图(VIEW，即可见的用户界面部分)、模型（Model，程序的数据模型和业务逻辑部分），控制器（Controller，根据用户输入通知模型和视图进行相应更改）。</p>
<p>25..ADO.NET的常用对象<br>答：Connection，Command，DataAdapter，DataSet，DataReader，configuration</p>
<p>26.C/S和B/S的区别，优缺点有哪些?<br>答：C/S是客户端/服务器端，C/S的程序通常也叫胖客户端，也就是一个程序的大部分功能，都在客户端实现，而服务器端只实现一小部分功能。通过这点不难看出，C/S的程序大部分在客户端实现，对于服务器端的压力相对小一些，服务器端可以节省一些。而且C/S的程序用窗口来做，个人认为开发效率上快一点。但C/S的程序一大弊端就是，必须要在客户端安装并部署程序才能运行，也就是用户必须得到客户端程序才可以运行。所以得考虑不同系统之间的安装与配置。<br>B/S是浏览器/服务器端，B/S的程序通常也叫瘦客户端，与C/S相反。B/S的程序大部分功能都要在服务器端实现，客户端只用来做辅助的控制功能。因为B/S的程序直接部署安装在服务器上。用户只需要有浏览器，并知道网址就可以使用程序。客户端不必做任何配置和安装，即可使用应用程序。而B/S也是有缺点的，首先B/S大部分功能都要在服务器端实现，对于服务器的要求就很高。服务器同时要应付用户访问与程序处理，所以服务器的配置必须能够应付。另外就是B/S的程序是浏览器中执行，所以B/S的程序操作客户端电脑的硬件，一般就得安装ActiveX等插件在客户端才可以操作。因此B/S的程序对于操作硬件，优势没有C/S的程序要好。</p>
<p>27.Windows 身份验证提供程序<br>1，提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。<br>2、 Forms 身份验证提供程序<br>提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件，它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。有关更多信息，请参见使用成员资格管理用户和 ASP.NET 登录控件概述。<br>3、 Passport 身份验证提供程序<br>提供有关由 Microsoft 提供的集中身份验证服务的信息，该服务为成员站点提供单一登录和核心配置文件服务</p>
<p>28.ASP.NET中页面传值的方法;<br>答：session(viewstate)                  简单，但易丢失<br>application                         全局<br>cookie                          简单，但可能不支持，可能被伪造<br>input type=”hidden”             简单，可能被伪造<br>url参数                          简单，显示于地址栏，长度有限<br>数据库                           稳定，安全，但性能相对弱</p>
<p>29.net中类与对象的关系;<br>答：万物都是对象，而类是对象的一个编程语言概念上的描述</p>
<p>30.ASP.NET里命名空间的定义;<br>答：命名空间是类的逻辑分组，它组织成一个层次结构——逻辑树。这个树的根是System。<br>在ASP.NET页面中，可以默认的使用某些命名空间中包含的类，称做标准的ASP.NET命名空间。对于其他命名空间，则必须显式地导入</p>
<p>31.ASP.NET中内置对象是什么?</p>
<p>在 Web 应用程序运行时，ASP.NET 将维护有关当前应用程序、每个用户会话、当前 HTTP 请求、请求的页等方面的信息。ASP.NET 包含一系列类，用于封装这些上下文信息。<br>Response提供对当前页的输出流的访问。您可以使用此类将文本插入页中、编写 Cookie，等等。<br>Request  提供对当前页请求的访问，其中包括请求标题、Cookie、客户端证书、查询字符串等。您可以使用此类读取浏览器已经发送的内容。<br>Context提供对整个当前上下文（包括请求对象）的访问。<br>Server公开可以用于在页之间传输控件的实用工具方法，获取有关最新错误的信息，对 HTML 文本进行编码和解码，等等。<br>Application提供对所有会话的应用程序范围的方法和事件的访问。还提供对可用于存储信息的应用程序范围的缓存的访问。<br>Session为当前用户会话提供信息。还提供对可用于存储信息的会话范围的缓存的访问，以及控制如何管理会话的方法。<br>Trace提供在 HTTP 页输出中显示系统和自定义跟踪诊断消息的方法。</p>
<h2 id="Asp-NET-知识点总结-四"><a href="#Asp-NET-知识点总结-四" class="headerlink" title="Asp.NET 知识点总结(四)"></a>Asp.NET 知识点总结(四)</h2><p>1.get和post 的区别</p>
<p>get是从服务器上获取数据，post是向服务器传送数据; </p>
<p>get安全性非常低，数据显示在地址栏，post安全性较高； 但是执行效率却比Post方法好；</p>
<p>get有字节限制为1024字节，post没有限制，起到限制的是服务器设置和内存大小及程序的处理能力；</p>
<p>对于get方式，服务器端用Request.QueryString获取变量的值，对于post方式，服务器端用Request.Form获取提交的数据。get是把参数数据队列加到提交表单的ACTION属性所指的URL中，值和表单内各个字段一一对应，在URL中可以看到。post是通过HTTP post机制，将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。</p>
<p>2..asp.net页面提交过程</p>
<p>3.自定义控件如何做?<br>答：自定义控件，跟HtmlControl或WebControl相似，编译后可以添加引用到工具栏里<br>面，直接用鼠标拖动使用。</p>
<p>4.界面的布局?        答：表格，div<br>5、程序的执行过程  答：先被编译成中间语言，再翻译平台专用语言.</p>
<p>6.ASP.NET分页的常用方法有以下几种。</p>
<p>启用部分数据控件的内置分页功能，如设置GridView控件的“AllowPaging”属性为“true”，类似的数据控件还有DetailsView等。<br>通过SQL查询语句，以提取指定部分的数据的方式完成分页的功能。也包括调用数据库中内置的存储过程完成分页数据的提取。<br>调用所对应数据适配器对象（DataAdapter对象）的Fill方法时，传递分页参数以完成数据集的分页功能。<br>通过访问DataTable对象的“Rows”属性，以循环输出的方式访问结果集中指定区段的数据行，以达到分页的效果。</p>
<p>7.视图状态ViewState的具体运行过程是什么?</p>
<p>每当用户请求某个.aspx页面时，.NET框架首先把相关控件的状态数据序列化成一个字符串，然后，将其做为名为<strong>VIEWSTATE的隐藏域的Value值发送到客户端。<br>如果页面是第一次被请求，那么服务器控件也将是被第一次执行时，名为</strong>VIEWSTATE的隐藏域中只包含控件的默认信息，通常为空或null。<br>在随后的回送事件中，ViewState中就保存了服务器控件在前面回送中可用的属性状态。这样服务器控件就能监视在当前被处理的回送事件发生之前的状态了。这些过程是由.NET框架负责的，对用户来说是执行.aspx页面就有了持续执行的效果。</p>
<p>8.面向对象的思想主要包括什么?<br>对向对象程序设计（OOP）思想：封装、继承、多态<br> 封装：用抽象的数据类型将数据和基于数据操作封装在一起，数据被保护在抽象类型内部。<br> 继承：子类拥有父类的所有数据和操作。<br> 多态：一个程序中同名的不同方法共存的情况。 有两种形式的多态：重载与重写。</p>
<p>9.什么是ASP.net中的用户控件?<br>用户控件就是.ascx,复合控件就是.DLL</p>
<p>10.UDP连接和TCP连接的异同。<br> 前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连接.</p>
<p>11.进程和线程分别怎么理解?<br>进程和线程都是由操作系统所体会的程序运行的基本单元，系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于：简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程，使得多线程程序的并发性高。<br>线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行，必须依存在应用程序中，由应用程序提供多个线程执行控制。</p>
<p>12.什么是SOAP,有哪些应用。<br>SOAP（Simple Object Access Protocol ）简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议，是一个基于XML的协议。</p>
<p>13.概述反射</p>
<p> 反射:程序集包含模块，而模块包含类型，类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例，将类型绑定到现有对象，或从现有对象中获取类型。然后，可以调用类型的方法或访问其字段和属性</p>
<p>14.序列化和反序列化 </p>
<p>序列化是将对象状态转换为可保持或传输的格式的过程，比如转化为二进制、xml、json等的过程。<br>与序列化相对的是反序列化，它将流转换为对象，也就是将在序列化过程中所生成的二进制串、xml、json等转换成数据结构或者对象的过程<br>这两个过程结合起来，可以轻松地存储、传输数据</p>
<p>15.用sealed修饰的类有什么特点</p>
<p>sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类，则会发生编译时错误。密封类不能同时为抽象类。sealed 修饰符主要用于防止非有意的派生，但是它还能促使某些运行时优化。具体说来，由于密封类永远不会有任何派生类，所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。</p>
<p>16.什么是ERP?ERP的演变过程?<br>答：所谓ERP是英文Enterprise Resource Planning(企业资源计划)的简写。它是从MRP(物料资源<br> 计划)发展而来的新一代集成化管理信息系统，它扩展了MRP的功能，其核心思想是供应链管理，它跳<br> 出了传统企业边界，从供应链范围去优化企业的资源，是基于网络经济时代的新一代信息系统。它对<br> 于改善企业业务流程、提高企业核心竞争力的作用是显而易见的。</p>
<p>17.在ASP.NET中如何进行文件上传?</p>
<p>首先，从客户端取得上传的文件，然后，我们将它放入数据流；<br>第二，服务器端读取数据流，然后将其保存到缓存；<br>第三，将缓存数据保存到数据库；<br>第一步:首先我们要实现用户在浏览器端自由选择文件，然后上传，这里用户选择文件，当然是要求标准的Windows方式，所以，我们在这里使用Form的File文件组件来给用户选择文件。注意，因为上传文件，所以，在Form的属性设置的时候，我们应该设置为：multipart/form-data，这样，才可以正确上传文件。</p>
<p>18.ASP.NET中共有几种类型的控件?各有什么区别?</p>
<p>WEB控件分为：内部控件, 列表控件, 复杂控件, 验证控件<br>内部控件–内部控件的使用方法与 HTML 控件相同,它们映射到 HTML 元素并通过使用 runat = “server” 属性在服务器上执行<br>列表控件–用于在 Web 页中创建数据列表<br>复杂控件– •当希望控件拥有复杂的功能或使用 HTML 元素无法创建的功能丰富的用户界面时，可以使用复杂控件<br>验证控件–输入控件的数据需要进行准确性和取值范围方面的检查</p>
<p>19.ASP.NET中的身份验证有那些?请解释。</p>
<p>Windows验证:指定Windows身份验证作为默认的身份验证模式.如果是任何形式的Internet信息服务(IIS)身份验证，则使用此模式.<br>Forms验证:指定基于ASP。NET窗体的身份验证作为默认的身份验证模式。<br>Passport:指定Microsoft Passport身份验证作为默认的身份验证模式。<br>None:不指定身份验证，仅适用于匿名用户，或者应用程序可以处理事件以提供它们自己的身份验证情况。</p>
<p>20.请详述在dotnet中类(class)与结构(struct)的异同：(10分)<br>答：Class可以被实例化,属于引用类型,是分配在内存的堆上的;Struct属于值类型,是分配在内存的栈上的.</p>
<p>21.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)<br>答：WS主要是可利用HTTP，穿透防火墙。而Remoting可以利用TCP/IP，二进制传送提高效率。</p>
<p>22.在c#中using和new这两个关键字有什么意义</p>
<p>using 指令有两个用途：允许在命名空间中使用类型，为命名空间或类型创建别名。</p>
<p>using 语句允许程序员指定使用资源的对象应当何时释放资源。</p>
<p>New 实例化一个对像，或修饰一个方法，表此方法完全重写此方法</p>
<p>23.C#中的验证控件有几种</p>
<p>a)RequiredFieldValidator（必须字段验证）；<br>b)CompareValidator（比较验证）；<br>c)RangeValidator （范围验证）；<br>d)RegularExpresionValidator（正则表达式）；<br>e)ValidationSummary（验证总结）；<br>f)CustomValidator（自定义验证）</p>
<p>24.静态成员和非静态成员的区别</p>
<p>静态变量使用 static 修饰符进行声明，在类被实例化时创建，通过类进行访问<br>不带有 static 修饰符声明的变量称做非静态变量，在对象被实例化时创建，通过对象进行访问<br>一个类的所有实例的同一静态变量都是同一个值，同一个类的不同实例的同一非静态变量可以是不同的值<br>静态函数的实现里不能使用非静态成员，如非静态变量、非静态函数等</p>
<p>25.如何调试一个ASP.NET web应用？<br>Attach aspnet_wp.exe 进程到你的DbgCLR debugger</p>
<p>26.const和static readonly区别</p>
<p>const：用 const 修饰符声明的成员叫常量，是在编译期初始化并嵌入到客户端程序<br>static readonly：用 static readonly 修饰符声明的成员依然是变量，只不过具有和常量类似的使用方法：通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化</p>
<p>27.C#里面可以避免一个类被其他类继承么？</p>
<p>是的，C#可以通过添加sealed关键字的方法来避免一个类被其他类继承。</p>
<p>28.C#如何允许一个类被继承但是避免这个类的方法被重载？</p>
<p>C#可以允许一个类被继承，但是这个类的方法不被重载。<br>只要把这个类定义为public的，但是在不允许被重载的方法前面加上sealed.</p>
<p>C#可以通过调用Sort()方法，然后再调用Reverse()方法。extern 修饰符用于声明由程序集外部实现的成员函数</p>
<p>29.params有什么用</p>
<p> params 关键字在方法成员的参数列表中使用，为该方法提供了参数个数可变的能力<br> 30.别名指示符是什么</p>
<p>主要用于解决两个命名空间内有同名类型的冲突或避免使用冗余的命名空间<br>别名指示符在所有命名空间最外层定义，作用域为整个单元文件。如果定义在某个命名空间内，那么它只在直接隶属的命名空间内起作用</p>
<h2 id="Asp-NET-知识点总结-五"><a href="#Asp-NET-知识点总结-五" class="headerlink" title="Asp.NET 知识点总结(五)"></a>Asp.NET 知识点总结(五)</h2><p>1.传入某个属性的set方法的隐含参数的名称是什么？<br>value，它的类型和属性所声名的类型相同。</p>
<p>2.如何在C#中实现继承？<br>在类名后加上一个冒号，再加上基类的名称。</p>
<p>3.C#支持多重继承么？<br>不支持。可以用接口来实现。</p>
<p>4.被protected修饰的属性/方法在何处可以访问？<br>在继承或间接继承与这个类的子类中可以访问。</p>
<p>5.私有成员会被继承么？<br>会，但是不能被访问。所以看上去他们似乎是不能被继承的，但实际上确实被继承了。</p>
<p>6.请描述一下修饰符protected internal。</p>
<p>被protected internal修饰的属性/方法只能在它的在同一个程序集（Assembly）中的子类被访问。</p>
<p>C#提供一个默认的无参数构造函数，当我实现了另外一个有一个参数的构造函数时候，还想保留这个无参数的构造函数。这样我应该写几个构造函数？<br>两个，一旦你实现了一个构造函数，C#就不会再提供默认的构造函数了，所以需要手动实现那个无参数构造函数。</p>
<p>7.C#中所有对象共同的基类是什么？</p>
<p>System.Object.</p>
<p>8.重载和覆写有什么区别？</p>
<p>重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。</p>
<p>9.在方法定义中，virtual有什么含意？</p>
<p>被virtual修饰的方法可以被子类覆写。<br>能够将非静态的方法覆写成静态方法么？<br>不能，覆写方法的签名必须与被覆写方法的签名保持一致，除了将virtual改为override。</p>
<p>10.可以覆写私有的虚方法么？</p>
<p>不可以，甚至子类中无法访问父类中的私有方法。</p>
<p>11.能够阻止某一个类被其他类继承么？<br>可以，使用关键字sealed。</p>
<p>12.能够实现允许某个类被继承，但不允许其中的某个方法被覆写么？<br>可以，标记这个类为public，并标记这个方法为sealed。</p>
<p>13.什么是抽象类（abstract class）？</p>
<p>一种不可以被实例化的类。抽象类中一般含有抽象方法，当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。</p>
<p>14.何时必须声明一个类为抽象类？<br>当这个类中包含抽象方法时，或是该类并没有完全实现父类的抽象方法时。</p>
<p>15.接口（interface）是什么？<br>只含有共有抽象方法（public abstract method）的类。这些方法必须在子类中被实现。</p>
<p>16.为什么不能指定接口中方法的修饰符？</p>
<p>接口中的方法用来定义对象之间通信的契约，指定接口中的方法为私有或保护没有意义。他们默认为公有方法。</p>
<p>17.可以继承多个接口么？<br>当然。</p>
<p>那么如果这些接口中有重复的方法名称呢？<br>这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。</p>
<p>18.接口和抽象类的区别是什么？</p>
<p>接口中所有方法必须是抽象的，并且不能指定方法的访问修饰符。抽象类中可以有方法的实现，也可以指定方法的访问修饰符。<br>如何区别重载方法？<br>不同的参数类型，不同的参数个数，不同的参数顺序。</p>
<p>19.const和readonly有什么区别？</p>
<p>const关键字用来声明编译时常量，readonly用来声明运行时常量。<br>System.String 和System.StringBuilder有什么区别？<br>System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串，并提供一些对这个字符串修改的方法。</p>
<p>20.列举一下你所了解的XML技术及其应用<br>答：保存配置,站与站之间的交流,WEB SERVICE。以及与数据库的数据交互等地方都要用它.</p>
<p>21.C#中的接口和类有什么异同。<br>答：<br>异：</p>
<p>不能直接实例化接口。<br>接口不包含方法的实现。<br>接口、类和结构可从多个接口继承。但是C# 只支持单继承：类只能从一个基类继承实现。<br>类定义可在不同的源文件之间进行拆分。</p>
<p>同：</p>
<p>接口、类和结构可从多个接口继承。<br>接口类似于抽象基类：继承接口的任何非抽象类型都必须实现接口的所有成员。<br>接口可以包含事件、索引器、方法和属性。<br>一个类可以实现多个接口。22.活动目录的作用。<br>答：Active Directory存储了有关网络对象的信息，并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式，并以此作为基础对目录信息进行合乎逻辑的分层组织。<br>23..net中读写XML的类都归属于哪些命名空间？<br>答：System.Xml</p>
<p>24.什么是SOAP,有哪些应用。<br>答：SOAP（Simple Object Access Protocol ）简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议，是一个基于XML的协议。使用SOAP，不用考虑任何特定的传输协议（最常用的还是HTTP协议），可以允许任何类型的对象或代码，在任何平台上，以任何一直语言相互通信。</p>
<p>25.抽象类和接口的区别</p>
<p>抽象类（abstract class）可以包含功能定义和实现，接口（interface）只能包含功能定义;</p>
<p>抽象类是从一系列相关对象中抽象出来的概念， 因此反映的是事物的内部共性；接口是为了满足外部调用而定义的一个功能约定， 因此反映的是事物的外部特性;<br>分析对象，提炼内部共性形成抽象类，用以表示对象本质，即“是什么”;<br>为外部提供调用或功能需要扩充时优先使用接口;</p>
<p> 接口可以包含属性、方法、索引指示器和事件，但不能包含常量、域、操作符、构造函数和析构函数，而且也不能包含任何静态成员</p>
<p>26.this 关键字</p>
<p>this是一个保留字，仅限于构造函数和方法成员中使用</p>
<p>27.Debug类与Trace类有什么区别</p>
<p>Debug类里所提供的函数仅在编译时带#Debug宏参数才奏效，一旦到了Release版本中，这些函数都会被忽略。也就是说Debug类的功能仅在程序员开发的时候能用。而Trace则不同，它能在Release版本的程序中也被运行</p>
<p>28.页面间的传值有哪几种方式<br>答：session(viewstate) 简单，但易丢失<br>application 全局<br>cookie 简单，但可能不支持，可能被伪造<br>input ttype=”hidden” 简单，可能被伪造<br>url参数 简单，显示于地址栏，长度有限<br>数据库 稳定，安全，但性能相对弱</p>
<p>29.深拷贝和浅拷贝</p>
<p>浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中，而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中，也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理，深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同（内容相同）的字段，也就是说这个引用和原是对象的引用是不同的，我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容</p>
<p>30.什么是属性访问器</p>
<p>属性访问器（Property Accessor），包括 get 访问器和 set 访问器分别用于字段的读写操作<br>其设计目的主要是为了实现面向对象（OO）中的封装思想。根据该思想，字段最好设为private，一个精巧的类最好不要直接把字段设为公有提供给客户调用端直接访问</p>
<h2 id="Asp-NET-知识点总结-六"><a href="#Asp-NET-知识点总结-六" class="headerlink" title="Asp.NET 知识点总结(六)"></a>Asp.NET 知识点总结(六)</h2><p>1.传入某个属性的set方法的隐含参数的名称是什么？</p>
<p>value，它的类型和属性所声名的类型相同。</p>
<p>2.如何在C#中实现继承？</p>
<p>在类名后加上一个冒号，再加上基类的名称。</p>
<p>3.C#支持多重继承么？</p>
<p>类之间不支持，接口之间支持。类对接口叫做实现，不叫继承。<br>4.被protected修饰的属性/方法在何处可以访问？</p>
<p>在继承或间接继承与这个类的子类中可以访问。<br>私有成员会被继承么？<br>会，但是不能被访问。所以看上去他们似乎是不能被继承的，但实际上确实被继承了。</p>
<p>请描述一下修饰符protected internal。</p>
<p>在同一个Assembly中，他的访问级别和public一样，而跨Assembly访问时，他的访问级别同protected一样。即protected的范围 + internal的范围。<br>C#提供一个默认的无参数构造函数，当我实现了另外一个有一个参数的构造函数时候，还想保留这个无参数的构造函数。这样我应该写几个构造函数？<br>两个，一旦你实现了一个构造函数，C#就不会再提供默认的构造函数了，所以需要手动实现那个无参数构造函数。</p>
<p>C#中所有对象共同的基类是什么？<br>System.Object.</p>
<p>重载和覆写有什么区别？</p>
<p>重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。</p>
<p>在方法定义中，virtual有什么含意？</p>
<p>被virtual修饰的方法可以被子类覆写。</p>
<p>能够将非静态的方法覆写成静态方法么？</p>
<p>不能，覆写方法的签名必须与被覆写方法的签名保持一致，除了将virtual改为override。</p>
<p>可以覆写私有的虚方法么？</p>
<p>不可以，甚至子类中无法访问父类中的私有方法。</p>
<p>能够阻止某一个类被其他类继承么？</p>
<p>可以，使用关键字sealed。</p>
<p>能够实现允许某个类被继承，但不允许其中的某个方法被覆写么？</p>
<p>可以，标记这个类为public，并标记这个方法为sealed。</p>
<p>什么是抽象类（abstract class）？</p>
<p>一种不可以被实例化的类。抽象类中一般含有抽象方法，当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。</p>
<p>何时必须声明一个类为抽象类？</p>
<p>当这个类中包含抽象方法时，或是该类并没有完全实现父类的抽象方法时。</p>
<p>接口（interface）是什么？</p>
<p>只含有共有抽象方法（public abstract method）的类。这些方法必须在子类中被实现。<br>为什么不能指定接口中方法的修饰符？<br>接口中的方法用来定义对象之间通信的契约，指定接口中的方法为私有或保护没有意义。他们默认为公有方法。</p>
<p>可以继承多个接口么？</p>
<p>当然。</p>
<p>那么如果这些接口中有重复的方法名称呢？</p>
<p>这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。</p>
<p>接口和抽象类的区别是什么？</p>
<p>接口中所有方法必须是抽象的，并且不能指定方法的访问修饰符。抽象类中可以有方法的实现，也可以指定方法的访问修饰符。</p>
<p>如何区别重载方法？</p>
<p>不同的参数类型，不同的参数个数，不同的参数顺序。</p>
<p>const和readonly有什么区别？</p>
<p>const可以用于局部常量，而readonly，实际是类的initonly字段，显然不能是局部的。</p>
<p>System.String 和System.StringBuilder有什么区别？</p>
<p>System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串，并提供一些对这个字符串修改的方法。</p>
<h2 id="Asp-NET-知识点总结-七"><a href="#Asp-NET-知识点总结-七" class="headerlink" title="Asp.NET 知识点总结(七)"></a>Asp.NET 知识点总结(七)</h2><p>1.new修饰符是起什么作用<br>new 修饰符用于声明类或类的成员，表示隐藏了基类中同名的成员。而new 操作符用于实例化一个类型<br>new 修饰符只能用于继承类，一般用于弥补基类设计的不足<br>new 修饰符和 override 修饰符不可同时用在一个成员上，因为这两个修饰符在含义上互相排斥</p>
<p>2.可以使用抽象函数重写基类中的虚函数吗</p>
<p>需使用 new 修饰符显式声明，表示隐藏了基类中该函数的实现<br>或增加 override 修饰符，表示抽象重写了基类中该函数的实现</p>
<p>3.说出你对remoting 和webservice的理解和应用</p>
<p>web服务，是利用SOAP（简单对象访问协议，Simple Object Access Protocol）在HTTP上执行远程方法调用的一种方法，也可以使用WSDL（Web Service Description Language，Web服务描述语言）来完整的描述Web服务，基于XML标准。<br>Remoting，可以用来访问另一个应用程序域中的对象，为客户机和服务器端的.Net应用程序之间的通讯提供了一种更为快速的格式。Remoting体系的主要元素：远程对象，信道，消息，格式标识符，格式标识符提供程序，代理对象，消息接收器，激活器，RemotingConfiguration类,ChannelServices类。</p>
<p>4..什么是XML？<br>答：可扩展标记语言，可以做配置文件，可以传输数据，可以存储数据</p>
<p>5.什么是Application Pool？<br>答：Web应用，类似Thread Pool，提高并发性能<br>6.链表和数组的区别，各有什么优缺点.<br>答：一个可以动态增长，一个固定,性能数组教好<br>7.Remoting在客户端服务器怎么实现 ?<br>答：创建一个TcpClientChannel对象，在ChannelServices中注册，然后使用Activator类把代理对象返回给远程对象。<br>8.什么是友元函数？<br>答：friendly声明，可以访问protect级别方法</p>
<p>9.dataset是保存数据的数据结构，断开模式，而DataReader不承担保存数据的责任，需要自己手动关闭连接数据库，它只负责从数据源读取数据到本地而已，是只读向前的，它不是数据结构，而是网络通讯组件的高层封装。</p>
<p>10.session 保存原理</p>
<p>通过cookie<br>Cookie是保存在客户端的一小段信息，服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时，会将原先的Cookie通过请求信息带到服务器端。</p>
<p>可以采用url重写。</p>
<p>11.iframe 的用法</p>
<p>iframe 标签 文件透明</p>
<p>allowtransparency=”true” style=”background-color=transparent”</p>
<p>刷新的三种方案：</p>
<p>用iframe的name属性定位：</p>
<input type="button" name="Button" value="Button" onclick="document.frames('ifrmname').location.reload()">

<p>用iframe的id属性定位：</p>
<input type="button" name="Button" value="Button" onclick="ifrmid.window.location.reload()">

<p>当iframe的src为其它网站地址(跨域操作时)：</p>
<input type="button" name="Button" value="Button" onclick="window.open(document.all.ifrmname.src,'ifrmname','')">

<p>12.您了解设计模式么？请列出您所知道的设计模式的名称。</p>
<p>设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。</p>
<p>创建型设计模式：与对象的创建有关。<br>结构型设计模式：处理类或对象的组合。<br>行为型设计模式：描述类或对象如何交互及如何分配职责。<br>常见的创建型设计模式有：单例模式；简单工厂模式；工厂方法模式；抽象工厂模式；建造者模式；原型模式。<br>常见的结构型模式：适配器模式；桥接模式；组合模式；装饰模式；外观模式；轻量级模式；代理模式。<br>常见的行为型模式：责任链模式；命令模式；解释模；迭代器模式；中介者模式；备忘录模式；观察者模式；状态模式；策略模式；模板方法模式；访问者模式。</p>
<p>单一设计模式： Singleton就是确保一个类只有唯一的一个实例。Singleton主要用于对象的创建，这意味着，如果某个类采用了Singleton模式，则在这个类被创建后，它将有且仅有一个实例可供访问。</p>
<p>简单工厂设计模式：简单工厂模式的实质是由一个工厂类根据传入的参数，动态决定应该创建哪一个产品类（这些产品类继承自一个父类或接口）的实例。</p>

            </div>
            <hr>

            
            <style>
    #reward {
        margin: 40px 0;
        text-align: center;
    }

    #reward .reward-link {
        font-size: 1.88rem;
    }

    #reward .btn-floating:hover {
        box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2), 0 5px 15px rgba(0, 0, 0, 0.2);
    }

    #rewardModal {
        width: 320px;
        height: 350px;
    }

    #rewardModal .reward-title {
        margin: 15px auto;
        padding-bottom: 5px;
    }

    #rewardModal .modal-content {
        padding: 10px;
    }

    #rewardModal .close {
        position: absolute;
        right: 15px;
        top: 15px;
        color: rgba(0, 0, 0, 0.5);
        font-size: 1.3rem;
        line-height: 20px;
        cursor: pointer;
    }

    #rewardModal .reward-tabs {
        margin: 0 auto;
        width: 210px;
    }

    .reward-tabs .tabs {
        height: 38px;
        margin: 10px auto;
        padding-left: 0;
    }

    .reward-tabs .tabs .tab {
        height: 38px;
        line-height: 38px;
    }

    .reward-tabs .tab a {
        color: #fff;
        background-color: #ccc;
    }

    .reward-tabs .tab a:hover {
        color: #fff;
    }

    .reward-tabs .wechat-tab .active {
        color: #fff;
        background-color: #22AB38;
    }

    .reward-tabs .alipay-tab .active {
        color: #fff;
        background-color: #019FE8;
    }

    .reward-tabs .reward-img {
        width: 210px;
        height: 210px;
    }
</style>

<div id="reward">
    <a class="reward-link btn-floating btn-large waves-effect waves-light red">赏</a>

    <!-- Modal Structure -->
    <div id="rewardModal" class="modal">
        <div class="modal-content">
            <a class="close"><i class="fa fa-close"></i></a>
            <h4 class="reward-title">你的赏识是我前进的动力</h4>
            <div class="reward-content">
                <div class="reward-tabs">
                    <ul class="tabs">
                        <li class="tab wechat-tab waves-effect waves-light"><a class="active" href="#wechat">微信</a></li>
                        <li class="tab alipay-tab waves-effect waves-light"><a href="#alipay">支付宝</a></li>
                    </ul>
                    <div id="wechat">
                        <img src="/medias/reward/wechat.png" class="reward-img" alt="微信打赏二维码">
                    </div>
                    <div id="alipay">
                        <img src="/medias/reward/alipay.jpg" class="reward-img" alt="支付宝打赏二维码">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    $(function () {
        $('#reward .reward-link').on('click', function () {
            $('#rewardModal').openModal();
        });

        $('#rewardModal .close').on('click', function () {
            $('#rewardModal').closeModal();
        });
    });
</script>
            

            <link rel="stylesheet" type="text/css" href="/libs/share/css/share.min.css">

<div id="article-share">
    
    <div class="social-share" data-disabled="qzone" data-wechat-qrcode-helper="<p>微信里点“发现”->“扫一扫”二维码便可查看分享。</p>"></div>
    
</div>

<script src="/libs/share/js/social-share.min.js"></script>

            <div class="reprint">
                <p>
                    <span class="reprint-tip">转载请注明: </span>
                    <a href="https://zy20081.github.io" class="b-link-green">Zhou•Yong</a>
                    <i class="fa fa-angle-right fa-lg fa-fw text-color"></i>
                    <a href="/2019/01/09/asp.net-zhi-shi-dian-zong-jie/" class="b-link-green">.net总结</a>
                </p>
            </div>
        </div>
    </div>

    

    

    

    

    

    

<article id="prenext-posts" class="prev-next articles">
    <div class="row article-row">
        
        <div class="article col s12 m6" data-aos="fade-up">
            <div class="article-badge left-badge text-color">上一篇</div>
            <div class="card">
                <a href="/2019/01/09/sqlserver-zong-jie/">
                    <div class="card-image">
                        
                        
                        <img src="/medias/featureimages/23.jpg" class="responsive-img" alt="SqlServer总结">
                        
                        <span class="card-title">SqlServer总结</span>
                    </div>
                </a>
                <div class="card-content article-content">
                    <div class="summary">分享一下都是自己写的，总结的，不是照搬网上的，只是分享，其中也有些小案例分享
创建数据库create database schoolA
on primary
(
 name='MyschoolA',
 filename='D:\databa</div>
                    <div class="publish-info">
                        <span class="publish-date">
                            <i class="fa fa-clock-o fa-fw icon-date"></i>2019-01-09
                        </span>
                        <span class="publish-author">
                            
                            <i class="fa fa-bookmark fa-fw icon-category"></i>
                            
                            <a href="/categories/数据库/" class="post-category" target="_blank">
                                    数据库
                                </a>
                            
                            
                        </span>
                    </div>
                </div>
                
                <div class="card-action article-tags">
                    
                    <a href="/tags/SqlServer/" target="_blank">
                        <span class="chip bg-color">SqlServer</span>
                    </a>
                    
                </div>
                
            </div>
        </div>
        
        
        <div class="article col s12 m6" data-aos="fade-up">
            <div class="article-badge right-badge text-color">下一篇</div>
            <div class="card">
                <a href="/2019/01/08/ado.net/">
                    <div class="card-image">
                        
                        
                        <img src="/medias/featureimages/12.jpg" class="responsive-img" alt="ADO.NET+SqlHelper">
                        
                        <span class="card-title">ADO.NET+SqlHelper</span>
                    </div>
                </a>
                <div class="card-content article-content">
                    <div class="summary">ADO.NET+自己封装的SqlHelper 理论到处都是的，我就不写理论了，两张图表达一切： 下面直接写demo练习和自己封装一个sqlHelper分享大家看看
连接 static public void TestConnection()</div>
                    <div class="publish-info">
                            <span class="publish-date">
                                <i class="fa fa-clock-o fa-fw icon-date"></i>2019-01-08
                            </span>
                        <span class="publish-author">
                            
                            <i class="fa fa-bookmark fa-fw icon-category"></i>
                            
                            <a href="/categories/ASP-NET/" class="post-category" target="_blank">
                                    ASP.NET
                                </a>
                            
                            
                        </span>
                    </div>
                </div>
                
                <div class="card-action article-tags">
                    
                    <a href="/tags/ADO-NET/" target="_blank">
                        <span class="chip bg-color">ADO.NET</span>
                    </a>
                    
                </div>
                
            </div>
        </div>
        
    </div>
</article>
</div>


    </div>
    <div class="col l3 hide-on-med-and-down">
        <div class="toc-widget">
            <div class="toc-title">目录</div>
            <div id="toc-content">

            </div>
        </div>
    </div>
</div>

<script src="/libs/tocbot/tocbot.min.js"></script>
<script>
    $(function () {
        tocbot.init({
            tocSelector: '#toc-content',
            contentSelector: '#articleContent',
            headingSelector: 'h2, h3, h4'
        });

        // modify the toc link href to support Chinese.
        let i = 0;
        let tocHeading = 'toc-heading-';
        $('#toc-content a').each(function () {
            $(this).attr('href', '#' + tocHeading + (++i));
        });

        // modify the heading title id to support Chinese.
        i = 0;
        $('#articleContent').children('h2, h3, h4').each(function () {
            $(this).attr('id', tocHeading + (++i));
        });

        // Set scroll toc fixed.
        let tocHeight = parseInt($(window).height() * 0.4 - 64);
        let $tocWidget = $('.toc-widget');
        $(window).scroll(function () {
            let scroll = $(window).scrollTop();
            /* add post toc fixed. */
            if (scroll > tocHeight) {
                $tocWidget.addClass('toc-fixed');
            } else {
                $tocWidget.removeClass('toc-fixed');
            }
        });
    });
</script>
    

</main>


<footer class="page-footer bg-color">
    <div class="container row center-align">
        <div class="col s12 m8 l8 copy-right">
            本站由ZhouYong 技术分享，心得分享.
        </div>
        <div class="col s12 m4 l4 social-link"><a href="#!" class="tooltipped" data-tooltip="邮件联系我: zy20081@126.com" data-position="top" data-delay="50">
    <i class="fa fa-envelope-open"></i>
</a>
<a href="#!" class="tooltipped" data-tooltip="QQ联系我: 314153271" data-position="top" data-delay="50">
    <i class="fa fa-qq"></i>
</a>

<a href="/atom.xml" class="tooltipped" target="_blank" data-tooltip="RSS 订阅" data-position="top" data-delay="50">
    <i class="fa fa-rss"></i>
</a>
</div>
    </div>
</footer>

<div class="progress-bar"></div>


<!-- 搜索遮罩框 -->
<div id="searchModal" class="modal">
    <div class="modal-content">
        <div class="search-header">
            <span class="title">搜索</span>
            <input type="search" id="searchInput" name="s" placeholder="请输入搜索的关键字" class="search-input" autofocus>
        </div>
        <div id="searchResult"></div>
    </div>
</div>

<script src="/js/search.js"></script>
<script type="text/javascript">
    searchFunc("/" + "search.xml", 'searchInput', 'searchResult');
</script>
<!-- 回到顶部按钮 -->
<div id="backTop" class="top-scroll">
    <a class="btn-floating btn-large waves-effect waves-light" href="#!">
        <i class="fa fa-angle-up"></i>
    </a>
</div>


<script src="/libs/materialize/js/materialize.min.js"></script>
<script src="/libs/masonry/masonry.pkgd.min.js"></script>
<script src="/libs/aos/aos.js"></script>
<script src="/libs/scrollprogress/scrollProgress.min.js"></script>
<script src="/libs/lightGallery/js/lightgallery-all.min.js"></script>

<script src="/libs/others/clicklove.js"></script>

<script src="/js/matery.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->


</body>
</html>